/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModuloConfiguracion;

import Acceso.Security;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;
import org.json.JSONArray;
import Modelo.Edificio;
import Modelo.Espacio;
import Modelo.DAL.Edificio_DAO;

/**
 *
 * @author Max
 */
public class ModifEdificioAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador"};

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        ModifEdificioForm mef = (ModifEdificioForm) form;

        String flag = request.getParameter("flag");
        if ((flag != null) && flag.equals("ida")) {
            System.out.println("entro en el flag ida");


            String nombre_edificio = mef.getNew_nombreEdificio();

            String select = "SELECT ed.nombre_edificio, ed.siglas, ed.nombre_sede, e.id_area, e.coordx,e.coordy,(Select count(*) from edificio where 1 = 1) FROM edificio ed,espacio e WHERE ed.nombre_edificio = e.nombre_espacio AND ed.nombre_sede = e.nombre_sede AND ed.nombre_edificio = '" + nombre_edificio + "';";

            response.setContentType("text/json");
            System.out.println(select);
            Edificio_DAO eDao = new Edificio_DAO();
            JSONArray edificio = eDao.consultarEdificioTabla(select);
            System.out.println("edificio " + edificio);

            if (edificio == null) {
                mef.setError("");
                mef.setSubmit("");
                mef.setReset("");
                return mapping.findForward(FAILURE);
            }
            JSONObject Edificio = new JSONObject();
            Edificio.put("modificarEdificioIda", edificio);
            PrintWriter pw = response.getWriter();
            pw.write(Edificio.toString());
            pw.flush();
            pw.close();

            mef.setError("");
            mef.setSubmit("");
            mef.setReset("");
            return mapping.findForward(FAILURE);
        }
        // Necesario para llenar le formulario

        // Necesario para modificar el objeto
        String submit = mef.getSubmit();
        //System.out.println("\n\n\n---------------\n TIPO = "+mef.getTipoInspeccion()+"\n-----------\n\n\n");
        if ((submit != null) && submit.equals("submit")) {

            // Necesario para resetear el formulario
            String reset = mef.getReset();
            if ((reset != null) && reset.equals("si")) {
                System.out.println("RESETEAR!!!!!");
                mef.reset(mapping, request);
                mef.setError("");
                mef.setSubmit("");
                mef.setReset("");
                return mapping.findForward(FAILURE);
            }
            mef.setReset("si");
            // Necesario para resetear el formulario

            System.out.println("entro en el flag submit");
            String nombre_Edificio = mef.getNombreEdificio();
            String nombreEdificio = mef.getNew_nombreEdificio();
            String siglas = mef.getNew_siglas();
            String id_area = mef.getNew_area();
            String sede = mef.getNew_sede();
            String coordX = mef.getNew_coordx();
            String coordY = mef.getNew_coordy();
            System.out.println(nombre_Edificio + " " + nombreEdificio + " " + siglas + " " + id_area + " " + sede + " " + coordX + " " + coordY);

            //System.out.println("\n\n---------------\n tipoIns = "+tipoInspeccion+"\n-----------\n\n");

            if (nombreEdificio == null || nombreEdificio.equals("")) {
                mef.setSubmit("");
                mef.setReset("");
                mef.setError("Debe colocar un nombre para el Edificio. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }


//********************************************************************************
            if (siglas == null || siglas.equals("")) {
                mef.setSubmit("");
                mef.setReset("");
                mef.setError("Debe colocar las siglas. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            if (id_area == null || id_area.equals("")) {
                mef.setSubmit("");
                mef.setReset("");
                mef.setError("Debe seleccionar una area. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            if (sede == null || sede.equals("")) {
                //System.out.println("\n\n\n -------------------- \ntipoInspeccion = "+tipoInspeccion+"\n----------------\n\n\n");
                mef.setSubmit("");
                mef.setReset("");
                mef.setError("Debe seleccionar una sede. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }

            //int nroInspeccion = Integer.parseInt(numeroInspeccion);
            // numeroInspeccion
            System.out.println("Entro........................");
            Edificio edificio = new Edificio(nombreEdificio, siglas, sede);
            Espacio espacio = new Espacio(nombre_Edificio, Short.parseShort("1"), id_area, sede, "Edificio", nombre_Edificio, coordX, coordY);
            if (Modelo.DAL.Edificio_DAO.actualizarEdificio(edificio, espacio)) {
                mef.reset(mapping, request);
                mef.setError("");
                mef.setSubmit("");
                mef.setReset("");
                return mapping.findForward(SUCCESS);
            } else {
                mef.setError("Error al actualizar el edificio en la base de datos.");
                mef.setSubmit("");
                mef.setReset("");
                return mapping.findForward(FAILURE);
            }
        }

        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
        String nombreEdificio = request.getParameter("id_edificio");
        System.out.println("\n\nnombreEdificio primera = " + nombreEdificio + "\n\n");
        mef.setNew_nombreEdificio(nombreEdificio);
        mef.setError("");
        mef.setSubmit("");
        mef.setReset("");
        return mapping.findForward(FAILURE);
        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
    }
}
